package com.example.first_android

import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
import androidx.core.graphics.toColorInt

/**
 * 颜色页面适配器 - 用于RecyclerView显示彩色页面项
 * 该适配器管理包含颜色和文本的页面数据，并在RecyclerView中渲染每个页面项
 */
class ColorAdapter : RecyclerView.Adapter<ColorAdapter.PageViewHolder>() {

    /**
     * 页面数据类 - 存储单个页面的颜色和文本内容
     */
    data class PageData(val color: String, val text: String)

    /**
     * 页面数据列表 - 包含3个预设页面
     * 每个页面包含背景色和显示文本
     */
    private val pages = listOf(
        PageData("#FF5733", "Page 1"),  // 橙色背景
        PageData("#33FF57", "Page 2"),  // 绿色背景
        PageData("#3357FF", "Page 3")   // 蓝色背景
    )

    /**
     * 页面视图持有者 - 用于绑定RecyclerView中的每个页面项
     * @property textView 显示页面文本的TextView
     */
    inner class PageViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
        val textView: TextView = itemView.findViewById(R.id.pageText)
    }

    /**
     * 创建新的ViewHolder（当RecyclerView需要新视图时调用）
     * @param parent RecyclerView的父容器
     * @param viewType 视图类型（此处未使用，固定为0）
     * @return 新创建的PageViewHolder
     */
    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): PageViewHolder {
        // 从布局文件item_page中inflate出新视图
        val view = LayoutInflater.from(parent.context)
            .inflate(R.layout.item_page, parent, false)
        return PageViewHolder(view)
    }

    /**
     * 绑定数据到ViewHolder（当视图需要显示数据时调用）
     * @param holder 页面视图持有者
     * @param position 数据在列表中的索引位置
     */
    override fun onBindViewHolder(holder: PageViewHolder, position: Int) {
        // 获取指定位置的页面数据
        val page = pages[position]
        with(holder) {
            // 设置文本内容
            textView.text = page.text
            // 将十六进制颜色字符串转换为ARGB颜色值并设置背景
            itemView.setBackgroundColor(page.color.toColorInt())
        }
    }

    /**
     * 返回数据集的大小（页面数量）
     * @return 数据集中页面的数量
     */
    override fun getItemCount() = pages.size

}